
package br.ucb.cesbdao.janelas;

/**
 * Síntese
 *    Atributos:
 *    		modeloTabelaGrupo,
 *    		btn_alterarGrupo,
 *    		btn_cancelarGrupo,
 *    		btn_excluirGrupo,
 *    		btn_pesquisarGrupo,
 *    		btn_visualizarGrupo,
 *    		jScrollPane1,
 *    		painelFiltroGrupo,
 *    		painelListaGrupo,
 *    		painelResultadosGrupo,
 *    		tabelaGrupo e
 *    		txt_campoGrupo.
 *    
 *    Métodos:
 *    		JanelaListaGrupo(ArrayList<Grupo>),
 *    		initComponents(),
 *   		btn_excluirGrupoActionPerformed(java.awt.event.ActionEvent evt, 
 *   		btn_cancelarGrupoActionPerformed(java.awt.event.ActionEvent evt), 
 *   		btn_pesquisarGrupoActionPerformed(java.awt.event.ActionEvent evt) , 
 *   		btn_alterarGrupoActionPerformed(java.awt.event.ActionEvent evt) e 
 *   		btn_visualizarGrupoActionPerformed(java.awt.event.ActionEvent evt).
 */

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.SQLException;

import javax.swing.ListSelectionModel;
import javax.swing.table.TableRowSorter;

import org.apache.log4j.Logger;

import br.ucb.cesbdao.enuns.EnumLabelAndBotao;
import br.ucb.cesbdao.enuns.EnumMensagens;
import br.ucb.cesbdao.enuns.EnumResources;
import br.ucb.cesbdao.model.GrupoModel;
import br.ucb.cesbdao.model.impl.GrupoModelImpl;
import br.ucb.cesbdao.modeloTabelas.ModeloTabelaGrupo;
import br.ucb.cesbdao.servicos.JanelaUtil;
import br.ucb.cesbdao.servicos.Servicos;
import br.ucb.cesbdao.visao.Visao;

@SuppressWarnings("serial")
public class JanelaListaGrupo extends javax.swing.JFrame implements KeyListener{
    
    private ModeloTabelaGrupo modeloTabelaGrupo = new ModeloTabelaGrupo();
    static Logger logger = Servicos.carregaLog(JanelaListaGrupo.class);
    
    public JanelaListaGrupo() throws SQLException, ClassNotFoundException {
    	GrupoModel model = new GrupoModelImpl();
        initComponents();
        setResizable(false);
        setVisible(true);
        modeloTabelaGrupo.setGrupos(model.consultaGrupo());
        tabelaGrupo.getTableHeader().setReorderingAllowed(false);
        tabelaGrupo.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        this.setTitle("Grupos");
    }
    
    private void initComponents() {

        painelListaGrupo = new javax.swing.JPanel();
        painelFiltroGrupo = new javax.swing.JPanel();
        txt_campoGrupo = new javax.swing.JTextField();
        painelResultadosGrupo = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tabelaGrupo = new javax.swing.JTable();
        btn_excluirGrupo = new javax.swing.JButton();
        btn_cancelarGrupo = new javax.swing.JButton();
        btn_alterarGrupo = new javax.swing.JButton();
        btn_visualizarGrupo = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setBounds(new java.awt.Rectangle(300, 25, 0, 0));

        painelFiltroGrupo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.FILTRO.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N

        txt_campoGrupo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.NOME_PARA_FILTRAR.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        txt_campoGrupo.addKeyListener(this);
        
        javax.swing.GroupLayout painelFiltroGrupoLayout = new javax.swing.GroupLayout(painelFiltroGrupo);
        painelFiltroGrupo.setLayout(painelFiltroGrupoLayout);
        painelFiltroGrupoLayout.setHorizontalGroup(
            painelFiltroGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelFiltroGrupoLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(txt_campoGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE)
                .addGap(144, 144, 144))
        );
        painelFiltroGrupoLayout.setVerticalGroup(
            painelFiltroGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelFiltroGrupoLayout.createSequentialGroup()
                .addContainerGap(11, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addComponent(txt_campoGrupo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(25, Short.MAX_VALUE))
        );

        painelResultadosGrupo.setBorder(javax.swing.BorderFactory.createTitledBorder(null, EnumLabelAndBotao.RESULTADOS.getTexto(), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 12))); // NOI18N

        tabelaGrupo.setModel(modeloTabelaGrupo);
        
        jScrollPane1.setViewportView(tabelaGrupo);

        btn_excluirGrupo.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_LIXEIRA.getCaminho()))); // NOI18N
        btn_excluirGrupo.setText(EnumLabelAndBotao.EXCLUIR.getTexto());
        btn_excluirGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                try {
					btn_excluirGrupoActionPerformed(evt);
				} catch (NumberFormatException e) {
					e.printStackTrace();
					logger.error(e.getMessage());
				} catch (SQLException e) {
					e.printStackTrace();
					logger.error(e.getMessage());
				} catch (ClassNotFoundException e) {
					e.printStackTrace();
					logger.error(e.getMessage());
				}
            }
        });

        btn_cancelarGrupo.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_CANCELAR.getCaminho()))); // NOI18N
        btn_cancelarGrupo.setText(EnumLabelAndBotao.CANCELAR.getTexto());
        btn_cancelarGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_cancelarGrupoActionPerformed(evt);
            }
        });

        btn_alterarGrupo.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_MODIFICAR.getCaminho()))); // NOI18N
        btn_alterarGrupo.setText(EnumLabelAndBotao.ALTERAR.getTexto());
        btn_alterarGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                try {
					btn_alterarGrupoActionPerformed(evt);
				} catch (SQLException e) {
					e.printStackTrace();
					logger.error(e.getMessage());
				} catch (ClassNotFoundException e) {
					e.printStackTrace();
					logger.error(e.getMessage());
				}
            }
        });

        btn_visualizarGrupo.setIcon(new javax.swing.ImageIcon(getClass().getResource(EnumResources.ICONE_BUSCAR.getCaminho()))); // NOI18N
        btn_visualizarGrupo.setText(EnumLabelAndBotao.VISUALIZAR.getTexto());
        btn_visualizarGrupo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btn_visualizarGrupoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout painelResultadosGrupoLayout = new javax.swing.GroupLayout(painelResultadosGrupo);
        painelResultadosGrupo.setLayout(painelResultadosGrupoLayout);
        painelResultadosGrupoLayout.setHorizontalGroup(
            painelResultadosGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelResultadosGrupoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelResultadosGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelResultadosGrupoLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 588, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelResultadosGrupoLayout.createSequentialGroup()
                        .addComponent(btn_alterarGrupo)
                        .addGap(18, 18, 18)
                        .addComponent(btn_excluirGrupo)
                        .addGap(18, 18, 18)
                        .addComponent(btn_cancelarGrupo)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btn_visualizarGrupo)
                        .addGap(66, 66, 66))))
        );
        painelResultadosGrupoLayout.setVerticalGroup(
            painelResultadosGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelResultadosGrupoLayout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(painelResultadosGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(painelResultadosGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(btn_cancelarGrupo)
                        .addComponent(btn_excluirGrupo)
                        .addComponent(btn_alterarGrupo))
                    .addComponent(btn_visualizarGrupo))
                .addContainerGap())
        );

        javax.swing.GroupLayout painelListaGrupoLayout = new javax.swing.GroupLayout(painelListaGrupo);
        painelListaGrupo.setLayout(painelListaGrupoLayout);
        painelListaGrupoLayout.setHorizontalGroup(
            painelListaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelListaGrupoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(painelListaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(painelResultadosGrupo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(painelFiltroGrupo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        painelListaGrupoLayout.setVerticalGroup(
            painelListaGrupoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(painelListaGrupoLayout.createSequentialGroup()
                .addComponent(painelFiltroGrupo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(painelResultadosGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelListaGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(painelListaGrupo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }
    
    private void btn_excluirGrupoActionPerformed(java.awt.event.ActionEvent evt) throws NumberFormatException, SQLException, ClassNotFoundException {
    	GrupoModel model = new GrupoModelImpl();
        if(tabelaGrupo.getSelectedRow() == -1){
           Visao.showMessageWarning(EnumMensagens.MSG_ALERTA_GRUPO_N_SELECIONADO.getMensagem(), "Aviso do sistema");
            return;
        }
        model.inativaGrupo(modeloTabelaGrupo.getGrupoAt(tabelaGrupo.getSelectedRow()).getIdGrupo());       
        setVisible(false);
    }

    private void btn_cancelarGrupoActionPerformed(java.awt.event.ActionEvent evt) {
        setVisible(false);
    }

    private void pesquisarGrupoActionPerformed() {
          final TableRowSorter<ModeloTabelaGrupo> sorter = new TableRowSorter<ModeloTabelaGrupo>(modeloTabelaGrupo);
          String busca = txt_campoGrupo.getText();
          JanelaUtil.getInstance().filtrarTabela(busca, sorter, tabelaGrupo,1,2,0);
    }

    private void btn_alterarGrupoActionPerformed(java.awt.event.ActionEvent evt) throws SQLException, ClassNotFoundException {
    	JanelaUtil.getInstance().janelaListaGrupo_Alterar(tabelaGrupo, modeloTabelaGrupo.getGrupoAt(tabelaGrupo.getSelectedRow()));
        this.setVisible(false);
        this.dispose();
    }

    private void btn_visualizarGrupoActionPerformed(java.awt.event.ActionEvent evt) {
    	JanelaUtil.getInstance().janelaListaGrupo_Visualizar(tabelaGrupo, modeloTabelaGrupo.getGrupoAt(tabelaGrupo.getSelectedRow()));
    }
    private javax.swing.JButton btn_alterarGrupo;
    private javax.swing.JButton btn_cancelarGrupo;
    private javax.swing.JButton btn_excluirGrupo;
    private javax.swing.JButton btn_visualizarGrupo;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JPanel painelFiltroGrupo;
    private javax.swing.JPanel painelListaGrupo;
    private javax.swing.JPanel painelResultadosGrupo;
    private javax.swing.JTable tabelaGrupo;
    private javax.swing.JTextField txt_campoGrupo;

	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		pesquisarGrupoActionPerformed();
		
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
 
}

